package com.xcw.test.caozuo;

import java.util.Scanner;

/**
 * @author bhx
 * @Class P10_
 * @date 2022/11/13 3:27
 * @Description TODO
 */

/**
 * 13、编写程序完成哥德巴赫猜想验证。哥德巴赫猜想要求:输入任何一个大于等于6的偶数，
 * 都能分解为两个素数之和。要求定义一个函数demo
 * (，完成—个偶数的输入，如果不是大于等于6的偶数必须一直保持输入状态，正确输入大于等于6的偶数后，调用素数判断函数prime()，
 * 返回是素数或者不是素数结果，在demo()中输出结果。
 * (1)本题分值:20分。
 * (2)考核时间: 36min。
 * (3）考核形式:上机实操。
 * (4)编程语言:C/C++、Python、Java任选一种语言。
 * (5)输入:一直输入，直到输入的整数为大于等于6的偶数
 * (6）输出:如果有多组答案，则输出第一个素数为最小的情况，比如16=3+13,16=5+11，只需输出16=3+13
 * (7)样例输入:3 9 8(8）样例输出:8=3+ 5
 */
public class P13_ {
    private static int[] arr = {0, 0};
    private static Scanner scanner;

    public static void main(String[] args) {
        int num = 0;
        while (true){
            System.out.println("请输入大于等于6的偶数:");
            scanner = new Scanner(System.in);
            num = scanner.nextInt();
            if (num >= 6 && num%2 == 0){
                break;
            } else {
                System.out.println("不合法 请重新输入！");
            }
        }
//        System.out.println(prime(2));
//        System.out.println(prime(7));
//        System.out.println(prime(3));
//        System.out.println(prime(5));
        if (checkPrime(num)){
            System.out.println(num + " = " + arr[0] +" + " + arr[1] + " ;");
        } else{
            System.out.println("测试失败！");
        }

    }

    public static boolean checkPrime(int nums){
        for (int i = 1; i < nums; i++) {
            arr[0] = i;
            arr[1] = nums - i;
            if (prime(arr[0])&&prime(arr[1])){
                return true;
            }
        }
        return false;
    }

    // 判断素数函数
    public static boolean prime(int num) {
        int i;
        for (i = 2; i < num; i++) {
            if (num % i == 0)
                break;
        }
        return (num == i);
    }
}
